/**
 * 短轮询
 * @param callback 异步函数
 * @param interval 间隔 ms
 * @returns 停止轮询
 * 
 * 用法：
 * 
 * 开始轮询：
 * shortPolling(callback, 1000)
 * 
 * 停止轮询：
 * const stop = () => shortPolling(callback, 1000);
 * stop()
 */
export function shortPolling(callback: () => Promise<void>, interval: number) {
    let isPolling = true;
  
    const poll = async () => {
      try {
        await callback();
      } catch (error) {
        console.error('Polling error:', error);
      } finally {
        if (isPolling) {
          setTimeout(poll, interval);
        }
      }
    };
  
    poll();
  
    /**
     * 返回一个停止轮询的函数
     */
    return () => {
      isPolling = false;
    };
  }